﻿/*
 * Criado por SharpDevelop.
 * Utilizador: Joao Palma
 * Data: 23-06-2010
 * Hora: 12:16  
 */
using System;
using System.Data;
using System.Windows.Forms;

namespace Operacional
{
    public partial class frmManutencao : Form
    {
        public frmManutencao()
        { InitializeComponent(); }

        private void frmManutencao_Load(object sender, EventArgs e)
        {
            this.Dock = DockStyle.Fill;
            Program.Entrada.tmrLogin.Stop();
            Program.Entrada.lblStatus.Text += " Linha: " + frmLinhas.numLinha;

            this.lblTitulo.Text += frmLinhas.numLinha;

            if (frmLinhas.dvLinhas_Tarefas.Count > 0)
            {
                string Estado = frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Estado"].ToString();
                MudaBotoes(Estado);

                frmLinhas.dvLinhas_Tarefas.RowFilter = string.Format("Linha={0} And Estado Like '{1}'", frmLinhas.numLinha, "Ped%");

                if (frmLinhas.dvLinhas_Tarefas.Count > 0)
                    this.txtObs.Text = frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Observacoes"].ToString().Replace('"', ' ').Trim();

                if (Estado == "PedFinalizado" && btnArranque.Enabled)
                    this.btnManutencao.Text = frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Duracao"].ToString();
            }
            else
                MudaBotoes("");

            if (this.btnFim.Enabled)
            {
                this.tmr2.Enabled = true;
                this.tmr2.Start();
            }
        }

        private void btnPedido_Click(object sender, EventArgs e)
        {
            string bt = ((Button)sender).Name;
            DataRow dRow;
            switch (bt)
            {
                #region Pedido
                case "btnPedido":
                    #region Nova Row
                    dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
                    dRow.ItemArray = new Object[] { null,  frmLinhas.numLinha, "","", DateTime.Now, "", "Pedido", "",
						frmEntrada.dvUsers[0][0].ToString(),frmEntrada.dvUsers[0][1].ToString()};

                    frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
                    frmEntrada.daLinhas_Tarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);
                    #endregion
                    MudaBotoes("Pedido");
                    break;
                #endregion
                #region Inicio Manutenção
                case "btnInicio":
                    string NomeTec = InputBox.Show("Nome do Técnico").Text;
                    #region Nova Row
                    dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
                    dRow.ItemArray = new Object[] { null, frmLinhas.numLinha, "", "", DateTime.Now, "", "PedIniciado", "",
						"", NomeTec};

                    frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
                    frmEntrada.daLinhas_Tarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);
                    #endregion
                    this.tmr2.Enabled = true;
                    this.tmr2.Start();
                    MudaBotoes("PedIniciado");
                    break;
                #endregion
                #region Fim
                case "btnFim":
                    NomeTec = InputBox.Show("Nome do Técnico", "").Text;
                    #region Nova Row
                    dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
                    dRow.ItemArray = new Object[] { null, frmLinhas.numLinha, "", "", DateTime.Now, btnManutencao.Text, "PedFinalizado", "",
						"",NomeTec};

                    frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
                    frmEntrada.daLinhas_Tarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

                    #endregion
                    this.tmr2.Stop();
                    this.tmr2.Enabled = false;
                    MudaBotoes("PedFinalizado");
                    break;
                #endregion
                #region Arranque
                case "btnArranque":
                    #region Nova Row

                    dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
                    dRow.ItemArray = new Object[] { null, frmLinhas.numLinha, "", "", DateTime.Now, this.btnDtPedido.Text, "ArranqueLinha", "",
						frmEntrada.dvUsers[0][0].ToString(),frmEntrada.dvUsers[0][1].ToString() };

                    frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
                    frmEntrada.daLinhas_Tarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

                    #endregion
                    frmLinhas Linhas = new frmLinhas();
                    Linhas.MdiParent = Program.Entrada;
                    Linhas.Show();
                    this.Close();
                    this.Dispose();
                    break;
                #endregion
            }
        }

        private void MudaBotoes(string Botao)
        {
            switch (Botao)
            {
                case "Pedido":
                    this.btnPedido.Enabled = false;
                    this.btnInicio.Enabled = true;
                    this.btnFim.Enabled = false;
                    this.btnArranque.Enabled = false;
                    break;
                case "PedIniciado":
                    this.btnPedido.Enabled = false;
                    this.btnInicio.Enabled = false;
                    this.btnFim.Enabled = true;
                    this.btnArranque.Enabled = false;
                    break;
                case "PedFinalizado":
                    this.btnPedido.Enabled = false;
                    this.btnInicio.Enabled = false;
                    this.btnFim.Enabled = false;
                    this.btnArranque.Enabled = true;
                    break;
                case "ArranqueLinha":
                    this.btnPedido.Enabled = true;
                    this.btnInicio.Enabled = false;
                    this.btnFim.Enabled = false;
                    this.btnArranque.Enabled = false;
                    break;
                default:
                    this.btnPedido.Enabled = true;
                    this.btnInicio.Enabled = false;
                    this.btnFim.Enabled = false;
                    this.btnArranque.Enabled = false;
                    break;
            }

            if (btnInicio.Enabled || btnFim.Enabled || btnArranque.Enabled)
            {
                this.txtObs.Enabled = true;
                this.btnGravaObs.Enabled = true;
            }
        }

        private void tmr_Tick(object sender, EventArgs e)
        {
            frmLinhas.dvLinhas_Tarefas.RowFilter = "Linha=" + frmLinhas.numLinha;

            if (frmLinhas.dvLinhas_Tarefas.Count > 0)
            {
                if (frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Estado"].ToString().IndexOf("Pedido") != -1 ||
                    this.btnFim.Enabled || this.btnArranque.Enabled)
                {
                    frmLinhas.dvLinhas_Tarefas.RowFilter = "Linha=" + frmLinhas.numLinha + "And Estado Like " + "'Pedido'";
                    if (frmLinhas.dvLinhas_Tarefas.Count == 0)
                        frmLinhas.dvLinhas_Tarefas.RowFilter = "Linha=" + frmLinhas.numLinha;
                    TimeSpan spn = TimeSpan.Parse(DateTime.Now.Subtract(Convert.ToDateTime(frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Data"])).ToString());
                    this.btnDtPedido.Text = Math.Abs(spn.TotalDays).ToString("00") + "." + Math.Abs(spn.Hours).ToString("00") +
                        Math.Abs(spn.Minutes).ToString(":00") + Math.Abs(spn.Seconds).ToString(":00");
                }

            }
        }

        private void tmr2_Tick(object sender, EventArgs e)
        {
            frmLinhas.dvLinhas_Tarefas.RowFilter = "Linha=" + frmLinhas.numLinha;

            if (frmLinhas.dvLinhas_Tarefas.Count > 0)
            {
                frmLinhas.dvLinhas_Tarefas.RowFilter = string.Format("Linha='{0}' And Estado Like 'PedIniciado'", frmLinhas.numLinha);
                TimeSpan spn = TimeSpan.Parse(DateTime.Now.Subtract(Convert.ToDateTime(frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Data"])).ToString());
                this.btnManutencao.Text = Math.Abs(spn.TotalDays).ToString("00") + "." + Math.Abs(spn.Hours).ToString("00") +
                    Math.Abs(spn.Minutes).ToString(":00") + Math.Abs(spn.Seconds).ToString(":00");
            }
        }

        private void btnGravaObs_Click(object sender, EventArgs e)
        {
            frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Clear();
            frmEntrada.daLinhas_Tarefas.Fill(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

            frmLinhas.dvLinhas_Tarefas.RowFilter = string.Format("Linha='{0}'", frmLinhas.numLinha);
            if (frmLinhas.dvLinhas_Tarefas.Count > 0)
            {
                DataRow[] dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Select("Id=" + frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Id"]);
                dRow[0]["Observacoes"] = "\"" + this.txtObs.Text + "\"";

                frmEntrada.daLinhas_Tarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);
                MessageBox.Show("Observação gravada.", "Sucesso");
            }
        }
    }
}
